import router from '@/router'
import store from '@/store'

// 白名单
const whiteList = ['/login']
/**
 *  路由前置守卫
 * to 要到哪里去
 * from 你从哪里来
 * next  是否要去
 */

router.beforeEach(async (to, from, next)=>{
  // 用户已经登录 不能进人login
  if (store.getters.token) {
    if (to.path === '/login') {
      next('/')
    } else {
      // 判断用户信息是否存在  不存在 获取
      if (!store.getters.hasUserInfo) {
        const { permission } = await store.dispatch('user/getUserInfo')
        // 处理用户权限
        const filterRoutes = await store.dispatch('permission/filterRoutes', permission.menus)
        filterRoutes.forEach(item => {
          router.addRoute(item)
          return next(to.path)
        })
      }
      next()
    }
  } else {
    // 用户未登录  只能进人login
    if (whiteList.indexOf(to.path) > -1) {
      next()
    } else {
      next('/login')
    }
  }
})